home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1999 #2 / Amiga Plus CD - 1999 - No. 2.iso / System-Boost / Workbench / TinyMeter / Source / TinyMeter_main / display.c next >
C/C++ Source or Header  |  1997-02-27  |  5KB  |  196 lines

  1. #include <exec/types.h>
  2. #include <exec/memory.h>
  3. #include <dos/dos.h>
  4. #include <dos/dosextens.h>
  5. #include <intuition/intuition.h>
  6. #include <intuition/gadgetclass.h>
  7. #include <intuition/intuitionbase.h>
  8. #include <intuition/classusr.h>
  9. #include <intuition/gadgetclass.h>
  10. #include <intuition/cghooks.h>
  11. #include <intuition/icclass.h>
  12. #include <intuition/classes.h>
  13. #include <intuition/sghooks.h>
  14. #include <intuition/screens.h>
  15. #include <datatypes/datatypesclass.h>
  16. #include <datatypes/datatypes.h>
  17. #include <datatypes/pictureclass.h>
  18. #include <libraries/SysInfo.h>
  19. #include <libraries/gadtools.h>
  20. #include <graphics/gfxbase.h>
  21. #include <graphics/text.h>
  22. #include <graphics/gfxmacros.h>
  23. #include <utility/tagitem.h>
  24. #include <utility/hooks.h>
  25. #include <string.h>
  26. #include <clib/macros.h>
  27. #include "gaugeclass.h"
  28. #include "launchclass.h"
  29. #include "tinymeter.h"
  30.  
  31. extern struct Library *RetinaBase;
  32.  
  33. extern ULONG    maximum,
  34.         idle;
  35.  
  36. void drawBackground(struct tm_sys_set *set,struct tm_data *data)
  37. {
  38.     struct RastPort *rp=data->win->RPort;
  39.     UWORD  x,y;
  40.  
  41.     x=data->win->Width-1;
  42.     y=data->win->Height-1;
  43.  
  44.     if(data->bg_bm)
  45.     {
  46.     BltBitMapRastPort(data->bg_bm,0,0,rp,0,0,x+1,y+1,0xc0);
  47.     FreeBitMap(data->bg_bm); data->bg_bm=0L;
  48.     }
  49.     else
  50.     {
  51.     SetAPen(rp,data->bg_color);
  52.     RectFill(rp,0,0,x,y);
  53.     }
  54.  
  55.     SetAPen(rp,data->bright_color);
  56.     switch (set->bd_type)
  57.     {
  58.     case    bd_simple:
  59.         RectFill(rp,0,0,x,0);
  60.         RectFill(rp,0,0,0,y);
  61.         RectFill(rp,x,0,x,y);
  62.         RectFill(rp,0,y,x,y);
  63.         break;
  64.     case    bd_standard:
  65.         RectFill(rp,0,0,x,0);
  66.         RectFill(rp,0,0,0,y);
  67.         SetAPen(rp,data->dark_color);
  68.         RectFill(rp,x,1,x,y);
  69.         RectFill(rp,1,y,x,y);
  70.         break;
  71.     case    bd_double:
  72.         SetAPen(rp,data->dark_color);
  73.         RectFill(rp,0,0,x,0);
  74.         RectFill(rp,0,0,0,y);
  75.         RectFill(rp,1,y-1,x-1,y-1);
  76.         RectFill(rp,x-1,2,x-1,y-1);
  77.         SetAPen(rp,data->bright_color);
  78.         RectFill(rp,x,1,x,y);
  79.         RectFill(rp,1,y,x,y);
  80.         RectFill(rp,1,1,x-1,1);
  81.         RectFill(rp,1,1,1,y-1);
  82.         break;
  83.     }
  84. }
  85.  
  86. void allocGadgets(struct tm_sys_set *set, struct tm_data *data, Class *gclass, Class *lclass)
  87. {
  88.     struct  tm_gau_set *many;
  89.     ULONG   i;
  90.     int     foo;
  91.     
  92.     for(i=0,many=data->list;i<data->num_of_gaug;i++)
  93.     {
  94.     switch (many->type)
  95.     {
  96.         case    typ_none:
  97.             data->gdg[i]=0L;
  98.             foo=0;
  99.             break;
  100.         case    typ_simplelauncher:
  101.         case    typ_iconlauncher:
  102.             foo=2;
  103.             break;
  104.         default:
  105.             foo=1;
  106.             break;
  107.     }
  108.     switch (foo)
  109.     {
  110.         case    1 :  data->gdg[i]=(struct Gadget *)NewObject(gclass, NULL,
  111.                 GA_ID,              0xFFF4,
  112.                 GA_Top,             calcYPos(i,data,set),
  113.                 GA_Left,            calcXPos(i,data,set),
  114.                 GA_Width,           data->gauge_x_size,
  115.                 GA_Height,          data->gauge_y_size_falling[i],
  116.                 GAU_Type,           many->gauge_type,
  117.                 GAU_Label,          many->label,
  118.                 GAU_TextFormat,     many->format,
  119.                 GAU_TextFont,       data->Font[i],
  120.                 GAU_LabelPos,       data->labelpos,
  121.                 GAU_FmtIndent,      many->indent,
  122.  
  123.                 GAU_3D,             many->sty_3d,
  124.                 GAU_Border,         many->sty_border,
  125.                 GAU_Background,     many->sty_bg,
  126.                 GAU_ShadowLabel,    many->sty_shadow,
  127.                 GAU_NoGauge,        many->sty_nogauge,
  128.                 GAU_NoFormat,       many->sty_noformat,
  129.                 GAU_NoBase,         many->sty_nobase,
  130.                 GAU_Expansion,      &many->expansion[0],
  131.                 GAU_DisWhat,        many->type,
  132.  
  133.                 GAU_ColLabel,       &many->Colors[col_label],
  134.                 GAU_ColFormat,      &many->Colors[col_format],
  135.                 GAU_ColBase,        &many->Colors[col_base],
  136.                 GAU_ColCurrent,     &many->Colors[col_current],
  137.                 GAU_ColNegative,    &many->Colors[col_negative],
  138.                 GAU_ColBrightEdg,   &many->Colors[col_bright],
  139.                 GAU_ColDarkEdg,     &many->Colors[col_dark],
  140.                 GAU_ColBackground,  &many->Colors[col_bg],
  141.  
  142.                 TAG_END);
  143.             if(!data->gdg[i]) show(err_noboo);
  144.             break;
  145.         case    2 :
  146.             data->gdg[i]=(struct Gadget *)NewObject(lclass, NULL,
  147.                 GA_ID,              i,
  148.                 GA_Top,             calcYPos(i,data,set),
  149.                 GA_Left,            calcXPos(i,data,set),
  150.                 GA_Width,           data->gauge_x_size,
  151.                 GA_Height,          data->gauge_y_size_falling[i],
  152.                 GA_Immediate,       TRUE,
  153.                 GA_RelVerify,       TRUE,
  154.  
  155.                 LAU_File,           &many->expansion[0],
  156.                 LAU_TextFont,       data->Font[i],
  157.                 LAU_3D,             many->sty_3d,
  158.                 LAU_Border,         many->sty_border,
  159.                 LAU_Background,     many->sty_bg,
  160.                 LAU_ShadowLabel,    many->sty_shadow,
  161.                 LAU_Down,           many->sty_nogauge,
  162.                 LAU_Transparent,    many->sty_noformat,
  163.                 LAU_Screen,         data->scr,
  164.                 LAU_Indent,         many->indent,
  165.                 LAU_Type,           many->type,
  166.  
  167.                 LAU_ColLabel,       &many->Colors[col_label],
  168.                 LAU_ColEntry,       &many->Colors[col_format],
  169.                 LAU_ColHalfBright,  &many->Colors[col_base],
  170.                 LAU_ColHalfShadow,  &many->Colors[col_current],
  171.                 LAU_ColCursor,      &many->Colors[col_negative],
  172.                 LAU_ColBrightEdg,   &many->Colors[col_bright],
  173.                 LAU_ColDarkEdg,     &many->Colors[col_dark],
  174.                 LAU_ColBackground,  &many->Colors[col_bg],
  175.                 TAG_END);
  176.             if(!data->gdg[i]) show(err_noboo);
  177.             break;
  178.  
  179.  
  180.     }
  181.     many=many->next;
  182.     }
  183. }
  184.  
  185. void removeGadgets(struct tm_sys_set *set, struct tm_data *data)
  186. {
  187.     int i;
  188.  
  189.     for(i=0;i<data->num_of_gaug;i++)
  190.     if(data->gdg[i])
  191.     {
  192.         DisposeObject(data->gdg[i]);
  193.         data->gdg[i]=0L;
  194.     }
  195. }
  196.